import 'package:gameplay_flutter/generated/json/base/json_field.dart';
import 'package:gameplay_flutter/generated/json/following_user_list_dto_entity.g.dart';
import 'dart:convert';

import 'package:gameplay_flutter/lib_basemodel/discover/moment_entity.dart';
export 'package:gameplay_flutter/generated/json/following_user_list_dto_entity.g.dart';

@JsonSerializable()
class FollowingUserListDtoEntity {
  late int total = 0;
  late List<FollowingUserListDtoList> list = [];

  FollowingUserListDtoEntity();

  factory FollowingUserListDtoEntity.fromJson(Map<String, dynamic> json) => $FollowingUserListDtoEntityFromJson(json);

  Map<String, dynamic> toJson() => $FollowingUserListDtoEntityToJson(this);

  @override
  String toString() {
    return jsonEncode(this);
  }
}

@JsonSerializable()
class FollowingUserListDtoList {
  late bool hideRoomStatus = false;
  late bool specialAttention = false;
  late int id = 0;
  @JSONField(name: "dynamic")
  late MomentEntity dynamicData = MomentEntity();
  dynamic dynamicVO;
  late String userCode = '';
  late FollowingUserListDtoListWealthInfo wealthInfo;
  late bool eachAttention = false;
  late String province = '';
  late String headPortraitsUrl = '';
  late String micFrameUrl;
  late String userRemark = '';
  late String onlineStr = '';
  late String platformAuthUrl = '';
  late String imId = '';
  late int type = 0;
  late int userId = 0;
  late String emblemUrl = '';
  late String nobleName = '';
  late String about = '';
  dynamic fromUserId;
  late bool online = false;
  dynamic h5MicFrameUrl;
  dynamic total;
  late String country = '';
  late String activeTime = '';
  dynamic userMoodInfo;
  dynamic toUserId;
  dynamic sortNumber;
  late int lastMemberExp = 0;
  dynamic dynamicInfo;
  late String visitTime = '';
  dynamic fanClubLogo;
  late int age = 0;
  late String imPsw = '';
  late String emblemSimpleUrl = '';
  late FollowingUserListDtoListPopularityInfo popularityInfo;
  dynamic decorationsHeadFrameUrl;
  dynamic nobleBackgroundUrl;
  dynamic roomInfo;
  late String nickname = '';
  dynamic virtualMemberExp;
  late int gender = 0;
  dynamic friendInfo;
  late String city = '';
  late int memberLevel = 0;
  late bool hideActiveTime = false;
  late String memberHeadPortrail = '';
  late String mobile = '';
  dynamic memberEmblem;
  dynamic fanGroupIcon;
  late int nobleRankCode = 0;
  dynamic richerInfo;
  dynamic memberExp;

  FollowingUserListDtoList();

  factory FollowingUserListDtoList.fromJson(Map<String, dynamic> json) => $FollowingUserListDtoListFromJson(json);

  Map<String, dynamic> toJson() => $FollowingUserListDtoListToJson(this);

  @override
  String toString() {
    return jsonEncode(this);
  }
}

@JsonSerializable()
class FollowingUserListDtoListWealthInfo {
  late int userId = 0;
  late int wealthValue = 0;
  late int topRank = 0;
  late String iconUrl = '';
  dynamic minIconUrl;
  late bool isInvalid = false;
  late int levelCode = 0;
  late String groupName = '';
  dynamic expansionCount;
  late String backgroundColor = '';
  late String levelName = '';

  FollowingUserListDtoListWealthInfo();

  factory FollowingUserListDtoListWealthInfo.fromJson(Map<String, dynamic> json) =>
      $FollowingUserListDtoListWealthInfoFromJson(json);

  Map<String, dynamic> toJson() => $FollowingUserListDtoListWealthInfoToJson(this);

  @override
  String toString() {
    return jsonEncode(this);
  }
}

@JsonSerializable()
class FollowingUserListDtoListPopularityInfo {
  late int userId = 0;
  dynamic topRank;
  dynamic iconUrl;
  late int hotValue = 0;
  late bool isInvalid = false;
  late int levelCode = 0;
  dynamic backgroundColor;
  late String levelName = '';

  FollowingUserListDtoListPopularityInfo();

  factory FollowingUserListDtoListPopularityInfo.fromJson(Map<String, dynamic> json) =>
      $FollowingUserListDtoListPopularityInfoFromJson(json);

  Map<String, dynamic> toJson() => $FollowingUserListDtoListPopularityInfoToJson(this);

  @override
  String toString() {
    return jsonEncode(this);
  }
}
